package com.matrix.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.matrix.api.user.dto.UpdateNicknameDTO;
import com.matrix.api.user.vo.UserInfoVO;
import com.matrix.common.domain.Result;
import com.matrix.user.entity.User;

import java.util.List;

/**
 * @author 有点甜
 * @since 2025/7/25
 */
public interface UserService extends IService<User> {
    /**
     * 根据Uid查找用户信息
     *
     * @param uid Uid
     * @return 用户信息
     */
    UserInfoVO getUserInfoByUid(Long uid);

    /**
     * 更新用户信息
     *
     * @param uid        用户Uid
     * @param profileDTO 用户信息
     * @return 更新结果
     */
    Result<UserInfoVO> updateUserProfile(Long uid, UpdateNicknameDTO profileDTO);

    /**
     * 更新用户头像
     *
     * @param uid       用户Uid
     * @param avatarUrl 头像地址
     */
    void updateUserAvatar(Long uid, String avatarUrl);

    /**
     * 添加收藏
     *
     * @param userId 用户ID
     * @param shopId 店铺ID
     */
    void addFavorite(Long userId, Long shopId);

    /**
     * 取消收藏
     *
     * @param userId 用户ID
     * @param shopId 店铺ID
     */
    void removeFavorite(Long userId, Long shopId);

    /**
     * 获取用户收藏列表
     *
     * @param userId 用户ID
     * @return 收藏列表
     */
    List<Long> listFavorites(Long userId);

    /**
     * 检查收藏状态
     *
     * @param userId 用户ID
     * @param shopId 店铺ID
     * @return 收藏返回true, 否则返回false
     */
    boolean checkFavoriteStatus(Long userId, Long shopId);

    /**
     * 获取用户搜索历史
     *
     * @param userId 用户ID
     * @return 搜索历史
     */
    List<String> getSearchHistory(Long userId);

    /**
     * 添加搜索历史
     *
     * @param userId  用户ID
     * @param keyword 搜索关键词
     */
    void addSearchHistory(Long userId, String keyword);

    /**
     * 清除搜索历史
     *
     * @param userId 用户ID
     */
    void clearSearchHistory(Long userId);
}
